package Day017_缓冲流_转换流_序列化流_打印流.demo4_序列流.Test2_序列化;

import java.io.FileOutputStream;
import java.io.ObjectOutputStream;

/**
 * @author zhangyan
 * @date 2020/5/9 11:49
 */
/*
            java.io.ObjectOutputStream 类，将Java对象的原始数据类型写出到文件,实现对象的持久存储

            构造方法:
                    public ObjectOutputStream(OutputStream out) ： 创建一个指定OutputStream的ObjectOutputStream

             一个对象要想序列化，必须满足两个条件:
                    1.该类必须实现 java.io.Serializable 接口， Serializable 是一个标记接口，
                      不实现此接口的类将不会使任何状态序列化或反序列化，会抛出 NotSerializableException 。
                    2.该类的所有属性必须是可序列化的。如果有一个属性不需要可序列化的，则该属性必须注明是瞬态的，使用
                      transient 关键字修饰。

            写出对象方法:
                    public final void writeObject (Object obj) : 将指定的对象写出
         */

public class Test1_ObjectOutputStream类 {
    public static void main(String[] args) throws Exception{
        //使用ObjectOutputStream序列化一个Person对象到文件

        //创建Person对象
        Person p = new Person("张三",20);
        //创建序列化流对象
        FileOutputStream fos = new FileOutputStream("Demo02\\aaa\\a.txt");
        ObjectOutputStream oos = new ObjectOutputStream(fos);
        //写出对象
        oos.writeObject(p);
        //关闭流
        oos.close();
    }
}

